package org.example.practice.controller;

import org.example.practice.entity.Person;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

@RequestMapping("/request")
@RestController
public class RequestController {

    @RequestMapping("/r1")
    public String r1(String name) {
        return "接收到参数 name = " + name;
    }
    @RequestMapping("/r2")
    public String r2(Integer age){
        return "接收到参数 age: " + age;
    }
    @RequestMapping("/r4")
    public String r4(String name, String password, int age){
        //此处字符串拼接,不考虑性能
        return "接收到参数 name: " + name + ", password:" + password + ", age: "+ age;
    }
    @RequestMapping("/r5")
    public String r5(Person person){
        //虽然你在类上用了 @RestController，但你在方法中把 person 放在字符串拼接里了（即："..." + person），
        // 导致它先被转成了 String（调用 toString()），而不是由 Spring 的消息转换器处理为 JSON。
        return "接收到参数 person: " + person;
    }
    @RequestMapping("/r6")
    //required=false 当请求中没有提供sa参数时，resouce将会是null。
    public String r6(@RequestParam(value ="sa",required = false) String resouce){
        //@RequestParam发送参数时是URL 参数：/user?name=Tom&age=20
        return "接收到参数 resouce: " + resouce;
    }
    @RequestMapping("/r7")
    public String r7(String[] names){
        return "接收到参数 names:" + Arrays.toString(names);
    }
    @RequestMapping("/r8")
    public String r8(@RequestParam List<String>  names){
        return "接收到参数 names:" + names;
    }
    @RequestMapping("/r9")
    public String r9(@RequestBody Person person){
        //@RequestBody，使用postman发送参数时是JSON 请求体：{"name": "Tom", "age": 20}
        return "接收到参数 person:" + person;
    }


//     获取url中的参数
//     @param articleId
//      @return

    @RequestMapping("/r10/{articleID}")
    //@PathVariable用于从 URL 路径中提取变量值。
    //http://127.0.0.1:8080/request/r10/123465
    //返回结果：接收到参数 articleID:123465
    public String r10(@PathVariable String articleID){
        return "接收到参数 articleID:" + articleID;
    }
    @RequestMapping("/r10/{articleId}/{type}")
    //http://localhost:8080/request/r10/123456/news
    //返回结果：接收到参数 articleId:123456, type:news
    public String r11(@PathVariable("articleId") Integer id, @PathVariable String type){
        return "接收到参数 articleId:" + id + ", type:" + type;
    }
    //接收文件
    @RequestMapping("/r12")
    public String r12(@RequestPart("file1") MultipartFile file) throws IOException {
        System.out.println(file.getName());
        System.out.println(file.getOriginalFilename());
        System.out.println(file.getContentType());
        File file1=new File("E:\\测试文件"+file.getOriginalFilename());
        file.transferTo(file1);
        return "上传成功";
    }
}
